Installation
说在前面,现在MM全系列框架仅支持在Linux或者MacOS上运行,Windows仍然处于实验阶段。
这是MMdetection系列教程的第一篇,那肯定是从最基础的安装开始!在食用这篇教程之前,首先需要了解版本的适配问题。不知道有多少人是否安装过Tensorflow1.x的版本,适配CUDA和Tensorflow的版本是一个老大难的问题了,mmdetection也需要这样的版本适配,但是,官方文档上有明确地写清楚版本的适配问题,这已经给众多小白提供了很大的便利,下面列出2021年8月30日
当前版本的版本适配表格,请一定一定要按照文档所说的安装对应的版本,当代码运行不起来的时候请先思考是不是版本的问题!!!当代码运行不起来的时候请先思考是不是版本的问题!!!当代码运行不起来的时候请先思考是不是版本的问题!!!重要的事情说三遍!!
MMDetection version | MMCV version |
---|---|
master | mmcv-full>=1.3.8, <1.4.0 |
2.15.1 | mmcv-full>=1.3.8, <1.4.0 |
2.15.0 | mmcv-full>=1.3.8, <1.4.0 |
2.14.0 | mmcv-full>=1.3.8, <1.4.0 |
2.13.0 | mmcv-full>=1.3.3, <1.4.0 |
2.12.0 | mmcv-full>=1.3.3, <1.4.0 |
2.11.0 | mmcv-full>=1.2.4, <1.4.0 |
2.10.0 | mmcv-full>=1.2.4, <1.4.0 |
2.9.0 | mmcv-full>=1.2.4, <1.4.0 |
2.8.0 | mmcv-full>=1.2.4, <1.4.0 |
2.7.0 | mmcv-full>=1.1.5, <1.4.0 |
2.6.0 | mmcv-full>=1.1.5, <1.4.0 |
2.5.0 | mmcv-full>=1.1.5, <1.4.0 |
2.4.0 | mmcv-full>=1.1.1, <1.4.0 |
2.3.0 | mmcv-full==1.0.5 |
2.3.0rc0 | mmcv-full>=1.0.2 |
2.2.1 | mmcv==0.6.2 |
2.2.0 | mmcv==0.6.2 |
2.1.0 | mmcv>=0.5.9, <=0.6.1 |
2.0.0 | mmcv>=0.5.1, <=0.5.8 |
系统配置要求
- Linux
- Python 3.5或以上版本
- PyTorch 1.1或更高版本
- CUDA 9.0或更高
- NCCL 2
- GCC 4.9或更高
- mmcv
环境配置准备
安装mmdetection推荐使用anaconda或者miniconda进行环境管理,所以我们先创建一个新的环境专门存放mmdetection等一系列环境。
- 创建conda虚拟环境并激活它
conda create -n openmmlab python=3.7 -y
conda activate openmmlab
- 安装PyTorch和torchvision等依赖库,这部分请根据PyTorch官方文档进行安装。
conda install pytorch torchvision -c pytorch
注意:请确保PyTorch对应自己运行环境的CUDA版本,你可以在官网上检查自己的CUDA版本所对应的PyTorch安装包。如果你的CUDA版本为10.1,则根据以下方式安装:
conda install pytorch cudatoolkit=10.1 torchvision -c pytorch
安装MMDetection
安装MMDetection主要有两种安装方法,一种方法是通过官方所开发的openmin
包管理器进行安装,这是现在比较推荐的一种安装方式,他可以自动处理对应版本的环境依赖版本;另一种方法则是可以手动安装。
- 自动安装
pip install openmim
mim install mmdet
- 手动安装
a.安装mmcv
手动安装需要先安装mmcv-full
或者mmcv
(强烈推荐安装mmcv-full
), openmmlab官方已经提供mmcv-full
的预编译包,大大简化了用户安装编译的过程。强烈推荐通过预编译包来安装。
MMCV 有两个版本:
- mmcv-full: 完整版,包含所有的特性以及丰富的开箱即用的 CUDA 算子。注意完整版本可能需要更长时间来编译。
- mmcv: 精简版,不包含 CUDA 算子但包含其余所有特性和功能,类似 MMCV 1.0 之前的版本。如果你不需要使用 CUDA 算子的话,精简版可以作为一个考虑选项。
注意:只能安装mmcv
或者mmcv-full
其中一个库,否则会出现MoudleNotFoundError
的报错。
pip install mmcv-full -f "https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html"
注意:这里有几个参数({cu_version},{torch_version}
分别表示CUDA的版本和PyTorch的版本,你需要替换对应匹配的CUDA版本和PyTorch版本,参考本文开头的表格以及下方中的表格。例如:
pip install mmcv-full -f "https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html"
CUDA与PyTorch版本组合表:
CUDA | torch1.9 | torch1.8 | torch1.7 | torch1.6 | torch1.5 | torch1.4 | torch1.3 |
---|---|---|---|---|---|---|---|
11.1 | cu_version=cu111,torch_version=torch1.9.0 | cu_version=cu111,torch_version=torch1.8.0 | |||||
11.0 | cu_version=cu110,torch_version=torch1.9.0 | ||||||
10.2 | cu_version=102,torch_version=torch1.9.0 | cu_version=102,torch_version=torch1.8.0 | cu_version=102,torch_version=torch1.7.0 | cu_version=102,torch_version=torch1.6.0 | cu_version=102,torch_version=torch1.5.0 | ||
10.1 | cu_version=101,torch_version=torch1.8.0 | cu_version=101,torch_version=torch1.7.0 | cu_version=101,torch_version=torch1.6.0 | cu_version=101,torch_version=torch1.5.0 | cu_version=101,torch_version=torch1.4.0 | cu_version=101,torch_version=torch1.3.0 | |
9.2 | cu_version=92,torch_version=torch1.7.0 | cu_version=92,torch_version=torch1.6.0 | cu_version=92,torch_version=torch1.5.0 | cu_version=92,torch_version=torch1.4.0 | cu_version=92,torch_version=torch1.3.0 | ||
cpu | cu_version=cpu,torch_version=1.9.0 | cu_version=cpu,torch_version=1.8.0 | cu_version=cpu,torch_version=1.7.0 | cu_version=cpu,torch_version=1.6.0 | cu_version=cpu,torch_version=1.5.0 | cu_version=cpu,torch_version=1.4.0 | cu_version=cpu,torch_version=1.3.0 |
除了使用预编译包之外,另一种方式是在本地进行编译,直接运行下述命令(不推荐)。本地编译可能会耗时 10 分钟以上,取决于使用的CPU性能。
pip install mmcv-full
有关自定义算子编译之后将另开mmcv
专题文章专门写自定义算子相关的操作以及编译和安装。(先挖好坑。。。
b.安装MMDetection核心库
可以直接运行以下指令直接安装:
pip install mmdet
或者可以克隆源代码仓库进行编译和安装:
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e . # or "python setup.py develop"
c.安装额外的依赖
直接运行如下语句即可安装Instaboost,Panoptic Segmentation
or LVIS dataset
# for instaboost
pip install instaboostfast
# for panoptic segmentation
pip install git+https://github.com/cocodataset/panopticapi.git
# for LVIS dataset
pip install git+https://github.com/lvis-dataset/lvis-api.git
注意:
- 凡是指定了
-e
或者develop
选项的pip安装过程,MMDetection安装的都是开发模式的框架,改动任何框架内部的改动只要没有重新安装都会起作用。 - 如果你想安装
opencv-python-headless
而不是opencv-python
,你可以安装opencv-python-headless
在安装MMCV
之前。 - 有些依赖是可选的。只需要运行
pip install -v -e .
只会安装所需要的依赖。为了使用可选的依赖像albumentations
和imagecorruptions
,可以使用pip
直接一起安装课选的依赖(e.g.pip install -v -e .[optional]
)[optional]
有效的值分别有:all
,tests
,build
和optional
安装验证
安装完成后,使用一个小demo来验证安装是否成功,如果运行成功,则说明安装成功;如果运行失败,则根据报错排查原因。
from mmdet.apis import init_detector, inference_detector
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# download the checkpoint from model zoo and put it in `checkpoints/`
# url: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
inference_detector(model, 'demo/demo.jpg')
到此就安装结束啦!
其他安装方式
- 编写脚本安装
conda create -n openmmlab python=3.7 -y
conda activate openmmlab
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y
# install the latest mmcv
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
# install mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .
- 使用docker安装
# build an image with PyTorch 1.6, CUDA 10.1
docker build -t mmdetection docker/
# run
docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection